//path: Node.js 的路径处理模块，用于处理文件路径。
//@rollup/plugin-json: Rollup 插件，允许直接导入 JSON 文件。
//@rollup/plugin-babel: Rollup 插件，用于集成 Babel 进行代码转译。
const path = require("path");
const json = require("@rollup/plugin-json");
const { babel } = require("@rollup/plugin-babel");
// 定义一个函数，用于解析文件路径
const resolveFile = function (filePath) {
  // 使用path模块的join方法，将当前目录和文件路径拼接起来
  return path.join(__dirname, filePath);
};
const plugins = [
  json({
    compact: true, // 压缩 JSON 数据
  }),
  babel({
    extensions: [".js", ".ts"], // 处理 JS 和 TS 文件
    babelHelpers: "bundled", // 将 Babel 辅助函数内联打包
    presets: [
      [
        "@babel/env",
        {
          targets: {
            //根据浏览器目标自动确定需要的转译规则，兼容使用率 >1% 的浏览器、最近两个版本，且排除 IE8 以下
            browsers: ["> 1%", "last 2 versions", "not ie <= 8"],
          },
        },
      ],
    ],
  }),
];
module.exports = [
  {
    plugins,
    input: resolveFile("../src/webEyeSDK.js"),
    output: {
      file: resolveFile("../dist/monitor.js"),
      // IIFE (浏览器直接使用)通过 <script> 标签直接引入浏览器
      //立即执行函数表达式
      format: "iife",
      name: "monitor",
      sourcemap: true,
    },
  },
  {
    plugins,
    input: resolveFile("../src/webEyeSDK.js"),
    output: {
      file: resolveFile("../dist/monitor.esm.js"),
      //ES Module (现代打包工具)（node/浏览器）
      format: "esm",
      name: "monitor",
      sourcemap: true,
    },
  },
  {
    plugins,
    input: resolveFile("../src/webEyeSDK.js"),
    output: {
      file: resolveFile("../dist/monitor.cjs.js"),
      //CommonJS (Node.js 环境)
      format: "cjs",
      name: "monitor",
      sourcemap: true,
    },
  },
];
